﻿Imports VN.INS.BL.BC
Imports System.Data
Imports System.Web
Imports System.IO

Partial Class Devida_Mantenimiento_Menu
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        btn_eliminar.Attributes.Add("onClick", "return confirm('Seguro que desea eliminar el registro?');")
        btnEliminar1.Attributes.Add("onClick", "return confirm('Seguro que desea eliminar el registro?');")
        If (Not (Page.IsPostBack)) Then

            CargaGrillaMenu()
            CargaGrillaMenuPerfil()
            LISTA_ESTADO()
            LISTA_ESTADO1()
            ListaPerfil()
            ListaPerfilBuscar()
        End If
    End Sub

    'carga de grilla menu
    Public Sub CargaGrillaMenu()
        Dim ObjCGM As Mantenimiento_MenuBC = New Mantenimiento_MenuBC
        Dim dtCM As DataTable
        dtCM = ObjCGM.ListaMenu()
        gv_menu.DataSource = dtCM
        gv_menu.DataBind()
    End Sub

    'carga de grilla menu con filtro
    Public Sub CargaGrillaMenuBusca(ByVal stridmenu As String, ByVal strDescripcion As String)
        Dim ObjCGM As Mantenimiento_MenuBC = New Mantenimiento_MenuBC
        Dim dtCM As DataTable

        dtCM = ObjCGM.ListaMenuBusca(stridmenu, strDescripcion)
        gv_menu.DataSource = dtCM
        gv_menu.DataBind()

    End Sub

    Public Sub ListaMenuPerfilBuscar(ByVal id_menu As String, ByVal menu_perfil As String, ByVal perfil As String)
        Dim ObjCGMP As Mantenimiento_MenuBC = New Mantenimiento_MenuBC
        Dim dtCMP As DataTable
        dtCMP = ObjCGMP.ListaMenuPerfilBuscar(id_menu, menu_perfil, perfil)
        gv_menuperfil.DataSource = dtCMP
        gv_menuperfil.DataBind()
    End Sub

    'carga de grilla menu_perfil
    Public Sub CargaGrillaMenuPerfil()
        Dim ObjCGMP As Mantenimiento_MenuBC = New Mantenimiento_MenuBC
        Dim dtCMP As DataTable
        dtCMP = ObjCGMP.ListaMenuPerfil()
        gv_menuperfil.DataSource = dtCMP
        gv_menuperfil.DataBind()
    End Sub

    Public Sub LISTA_ESTADO()
        Dim ObjLEBC As GeneralBC
        Dim ObjData As DataTable
        ObjLEBC = New GeneralBC
        ObjData = New DataTable
        ObjData = ObjLEBC.ListaTablaGeneral("ESTADO_PERIODO")
        Dim drestadorow As DataRow = ObjData.NewRow()
        drestadorow("DESCRIPCION") = "--Seleccione--"
        drestadorow("CODIGO") = "all"
        ObjData.Rows.Add(drestadorow)
        ddl_estado.DataSource = ObjData
        ddl_estado.DataTextField = "DESCRIPCION"
        ddl_estado.DataValueField = "CODIGO"
        ddl_estado.DataBind()
        ddl_estado.SelectedValue = "all"
    End Sub

    Public Sub LISTA_ESTADO1()
        Dim ObjLEBC As GeneralBC
        Dim ObjData As DataTable
        ObjLEBC = New GeneralBC
        ObjData = New DataTable
        ObjData = ObjLEBC.ListaTablaGeneral("ESTADO_USUARIO")
        Dim drestadorow As DataRow = ObjData.NewRow()
        drestadorow("DESCRIPCION") = "--Seleccione--"
        drestadorow("CODIGO") = "all"
        ObjData.Rows.Add(drestadorow)
        ddlEstado1.DataSource = ObjData
        ddlEstado1.DataTextField = "DESCRIPCION"
        ddlEstado1.DataValueField = "CODIGO"
        ddlEstado1.DataBind()
        ddlEstado1.SelectedValue = "all"
    End Sub

    Public Sub ListaPerfil()
        Dim ObdataLP As Mantenimiento_MenuBC
        Dim Objdt As DataTable
        ObdataLP = New Mantenimiento_MenuBC
        Objdt = New DataTable
        Objdt = ObdataLP.ListaPerfil()
        Dim drperfil As DataRow = Objdt.NewRow()
        drperfil("DESCRIPCION") = "--Seleccione--"
        drperfil("PERFIL") = "all"
        Objdt.Rows.Add(drperfil)
        ddlperfil.DataSource = Objdt
        ddlperfil.DataTextField = "DESCRIPCION"
        ddlperfil.DataValueField = "PERFIL"
        ddlperfil.DataBind()
        ddlperfil.SelectedValue = "all"

    End Sub

    Public Sub ListaPerfilBuscar()
        Dim ObdataLP As Mantenimiento_MenuBC
        Dim Objdt As DataTable
        ObdataLP = New Mantenimiento_MenuBC
        Objdt = New DataTable
        Objdt = ObdataLP.ListaPerfil()
        Dim drperfil As DataRow = Objdt.NewRow()
        drperfil("DESCRIPCION") = "--Seleccione--"
        drperfil("PERFIL") = "all"
        Objdt.Rows.Add(drperfil)
        ddl_Perfil.DataSource = Objdt
        ddl_Perfil.DataTextField = "DESCRIPCION"
        ddl_Perfil.DataValueField = "PERFIL"
        ddl_Perfil.DataBind()
        ddl_Perfil.SelectedValue = "all"

    End Sub

    Protected Sub gv_menu_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv_menu.RowDataBound
        ' FORMATEA ROWS
        If e.Row.RowType = DataControlRowType.DataRow Then
            ' ASIGNA EVENTOS
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gv_menu, "Select$" + e.Row.RowIndex.ToString)
        End If
    End Sub

    Protected Sub gv_menu_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gv_menu.SelectedIndexChanged
        'llenado de controles con datos de fila seleccionada
        txtidmenu.Enabled = False
        chkb.Checked = False
        Dim hfEstado As HiddenField = CType(gv_menu.SelectedRow.FindControl("hfestado"), HiddenField)
        txtidmenu.Text = gv_menu.SelectedRow.Cells(1).Text
        txtdescripcion.Text = Server.HtmlDecode(gv_menu.SelectedRow.Cells(2).Text)
        txtpadreid.Text = gv_menu.SelectedRow.Cells(3).Text
        ddl_estado.SelectedValue = hfEstado.Value
        txt_posicion.Text = gv_menu.SelectedRow.Cells(4).Text
        txturl.Text = Server.HtmlDecode(gv_menu.SelectedRow.Cells(6).Text)
        ViewState("VSIDMENU") = txtidmenu.Text
    End Sub

    Protected Sub gv_menuperfil_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv_menuperfil.RowDataBound
        ' FORMATEA ROWS
        If e.Row.RowType = DataControlRowType.DataRow Then
            ' ASIGNA EVENTOS
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gv_menuperfil, "Select$" + e.Row.RowIndex.ToString)
        End If
    End Sub

    Protected Sub gv_menuperfil_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gv_menuperfil.SelectedIndexChanged
        'llenado de cabecera con valores de fila seleccionada
        chkb1.Checked = False
        Dim hfEstado1 As HiddenField = CType(gv_menuperfil.SelectedRow.FindControl("hfEstado1"), HiddenField)
        Dim hfperfil As HiddenField = CType(gv_menuperfil.SelectedRow.FindControl("hfPerfil"), HiddenField)
        txtid_menu.Text = gv_menuperfil.SelectedRow.Cells(1).Text
        txtmenuperfil.Text = gv_menuperfil.SelectedRow.Cells(2).Text
        ddlEstado1.SelectedValue = hfEstado1.Value
        txturl.Text = gv_menuperfil.SelectedRow.Cells(4).Text
        ddlperfil.SelectedValue = hfperfil.Value
    End Sub

    'insercion de menu
    Public Sub insertarmenu(ByVal IDMENU As String, ByVal DSC As String, ByVal PADRE As String, ByVal POSC As String, ByVal HAB As String, ByVal UR As String)
        Dim ObjIM As Mantenimiento_MenuBC
        Try
            ObjIM = New Mantenimiento_MenuBC
            ObjIM.insertarmenu(IDMENU, DSC, PADRE, POSC, HAB, UR)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    'eedicion de menu
    Public Sub editamenu(ByVal IDMENU As String, ByVal DSC As String, ByVal PADRE As String, ByVal POSC As String, ByVal HAB As String, ByVal UR As String)
        Dim ObjEM As Mantenimiento_MenuBC
        Try
            ObjEM = New Mantenimiento_MenuBC
            ObjEM.editamenu(IDMENU, DSC, PADRE, POSC, HAB, UR)

        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    'eliminacion de menu
    Public Sub eliminarmenu(ByVal IDMENU As String)
        Dim ObjELM As Mantenimiento_MenuBC
        Try
            ObjELM = New Mantenimiento_MenuBC
            ObjELM.eliminarmenu(IDMENU)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Protected Sub btn_guardar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_guardar.Click
        If chkb.Checked = True Then 'Nuevo
            'Insercion de menu si tiene datos completos
            If txtidmenu.Text = "" Or txtdescripcion.Text = "" Or txtpadreid.Text = "" Or txt_posicion.Text = "" Then
                alerta.Mostrar_Alerta("Aviso", "Llene todos los campos")
                Exit Sub
            Else
                insertarmenu(txtidmenu.Text, txtdescripcion.Text, txtpadreid.Text, txt_posicion.Text, ddl_estado.SelectedValue.ToString, txturl.Text)
                alerta.Mostrar_Alerta("Aviso", "Registro Guardado ")
            End If
        Else                        'Edicion
            'Edicion de menu seleccionado
            If gv_menu.SelectedIndex = -1 Then
                alerta.Mostrar_Alerta("Aviso", "Debe seleccionar un Registro o elegir la opcion  Nuevo")
            Else
                editamenu(ViewState("VSIDMENU"), txtdescripcion.Text, txtpadreid.Text, txt_posicion.Text, ddl_estado.SelectedValue.ToString, txturl.Text)
                alerta.Mostrar_Alerta("Aviso", "Los Datos se Guardaron Correctamente")
            End If
        End If
        chkb.Checked = False
        CargaGrillaMenu()
        Limpiar()
    End Sub

    Protected Sub btnGuardar1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnGuardar1.Click
        If chkb1.Checked = True Then    'Nuevo
            'Insercion de menu si tiene datos completos
            If txtid_menu.Text = "" Or txtmenuperfil.Text = "" Or ddlEstado1.SelectedValue = "all" Or ddlperfil.SelectedValue = "all" Then
                alerta.Mostrar_Alerta("Aviso", "Llene todos los campos")
                Exit Sub
            Else
                insertarmenuperfil(txtid_menu.Text, txtmenuperfil.Text, ddlperfil.SelectedValue, ddlEstado1.SelectedValue)
                alerta.Mostrar_Alerta("Aviso", "Los Datos se Guardaron Correctamente")
            End If
        Else                            'Edicion
            'Edicion de menu seleccionado
            If gv_menuperfil.SelectedIndex = -1 Then
                alerta.Mostrar_Alerta("Aviso", "Debe seleccionar un Registro o elegir la opcion  Nuevo")
            End If
            editarmenuperfil(txtid_menu.Text, txtmenuperfil.Text, ddlperfil.SelectedValue, ddlEstado1.SelectedValue)
            alerta.Mostrar_Alerta("Aviso", "Los Datos se Guardaron Correctamente")
        End If
        chkb1.Checked = False
        CargaGrillaMenuPerfil()
        LimpiarMP()
    End Sub

    Public Sub Limpiar()
        'limpia los controles de cabecera menu
        txtidmenu.Text = ""
        txtdescripcion.Text = ""
        txtpadreid.Text = ""
        txt_posicion.Text = ""
        ddl_estado.SelectedValue = "all"
        txturl.Text = ""
    End Sub

    Protected Sub chkb_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkb.CheckedChanged
        'si se marca como nuevo se limpia cabecera menu
        If chkb.Checked = True Then
            gv_menu.SelectedIndex = -1
            Limpiar()
            txtidmenu.Enabled = True
            txtidmenu.Text = ""
        End If
    End Sub

    Protected Sub btn_eliminar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_eliminar.Click
        If gv_menu.SelectedIndex = -1 Then
            alerta.Mostrar_Alerta("Aviso", "Debe seleccionar un Registro")
        Else
            Dim objPHM As Mantenimiento_MenuBC
            Dim objdt As DataTable
            objPHM = New Mantenimiento_MenuBC
            objdt = objPHM.PHM(txtidmenu.Text)
            'verifica si tiene hijos en menu
            If objdt.Rows.Count = 0 Then
                Dim objRMEM As Mantenimiento_MenuBC
                Dim objdt2 As DataTable
                objRMEM = New Mantenimiento_MenuBC
                objdt2 = objRMEM.RMEMP(txtidmenu.Text)
                'verifica si tiene hijos en menu_perfil
                If objdt2.Rows.Count = 0 Then
                    'elimina menu
                    eliminarmenu(txtidmenu.Text)
                    alerta.Mostrar_Alerta("Aviso", " Registro Eliminado")
                Else
                    alerta.Mostrar_Alerta("Aviso", " El Menu está siendo usado")
                End If
            Else
                alerta.Mostrar_Alerta("Aviso", " El Menu tiene hijos")
            End If
        End If
        Limpiar()
        CargaGrillaMenu()
    End Sub

    'salir
    Protected Sub btnsalir_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnsalir.Click
        Response.Redirect("Inicio.aspx")
    End Sub

    'insercion de menu_perfil
    Public Sub insertarmenuperfil(ByVal IDMN As String, ByVal MP As String, ByVal PF As String, ByVal EST As String)
        Dim ObjIMP As Mantenimiento_MenuBC
        Try
            ObjIMP = New Mantenimiento_MenuBC
            ObjIMP.insertarmenuperfil(IDMN, MP, PF, EST)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    'eedicion de menu_perfil
    Public Sub editarmenuperfil(ByVal IDMN As String, ByVal MP As String, ByVal PF As String, ByVal EST As String)
        Dim ObjEMP As Mantenimiento_MenuBC
        Try
            ObjEMP = New Mantenimiento_MenuBC
            ObjEMP.editarmenuperfil(IDMN, MP, PF, EST)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    'eliminacion de menu_perfil
    Public Sub eliminarmenuperfil(ByVal IDMP As String)
        Dim ObjEMP As Mantenimiento_MenuBC
        Try
            ObjEMP = New Mantenimiento_MenuBC
            ObjEMP.eliminarmenuperfil(IDMP)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Public Sub LimpiarMP()
        'limpia los controles de cabecera menu_perfil
        txtid_menu.Text = ""
        txtmenuperfil.Text = ""
        ddlEstado1.SelectedValue = "all"
        ddlperfil.SelectedValue = "all"
    End Sub

    Protected Sub chkb1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkb1.CheckedChanged
        'si se marca como nuevo se limpia cabecera menu_perfil
        If chkb1.Checked = True Then
            gv_menuperfil.SelectedIndex = -1
            LimpiarMP()
        End If
    End Sub

    Protected Sub btnEliminar1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnEliminar1.Click
        If gv_menuperfil.SelectedIndex = -1 Then
            alerta.Mostrar_Alerta("Aviso", "Debe seleccionar un Registro")
        Else
            Dim objHMP As Mantenimiento_MenuBC
            Dim objdt As DataTable
            objHMP = New Mantenimiento_MenuBC
            objdt = objHMP.HMP(txtid_menu.Text, ddlperfil.SelectedValue.ToString)
            'verificar si tiene hijos en menu perfil
            If objdt.Rows.Count = 0 Then
                eliminarmenuperfil(txtmenuperfil.Text)
                alerta.Mostrar_Alerta("Aviso", " Registro Eliminado")
            Else
                alerta.Mostrar_Alerta("Aviso", " El Menu Perfil tiene hijos")
            End If
        End If
        LimpiarMP()
        CargaGrillaMenuPerfil()
    End Sub

    Protected Sub boton_busca_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles boton_busca.Click
        'buscar en menu
        CargaGrillaMenuBusca(txt_id_menu.Text, txtdescripicon.Text)
    End Sub

    Protected Sub buscar2_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles buscar2.Click
        'buscar en menu_perfil
        ListaMenuPerfilBuscar(txtidmenuperfil.Text, txt_Menu_Perfil.Text, ddl_Perfil.SelectedValue.ToString)
    End Sub

    'salir
    Protected Sub btnSalir1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnSalir1.Click
        Response.Redirect("Inicio.aspx")
    End Sub
End Class
